package com.wugh.fast.module.async.service;

import com.wugh.fast.module.async.dto.CreateProcessDTO;
import com.wugh.fast.module.async.dto.CreateTaskDTO;
import com.wugh.fast.module.async.dto.Task;
import com.wugh.fast.module.async.dto.TaskProcessDetailDTO;

/**
 * 说明:
 *
 * @author wugh
 * @date 2020/4/8 17:19
 */
public interface TaskService {
    /**
     * 查询任务的详细信息
     * <pre>
     *     包括完成进度信息和正在进行的信息
     * </pre>
     *
     * @param taskId
     * @return
     */
    TaskProcessDetailDTO getTaskDetail(String taskId);

    /**
     * 直接创建任务并启动
     *
     * @param createTask
     * @return
     */
    Task startTask(CreateTaskDTO createTask);

    /**
     * 完成任务
     *
     * @param id
     */
    void finishTask(String id);


    /**
     * 因为停止任务
     * <pre>
     *     记录异常信息
     * </pre>
     *
     * @param id
     * @param throwable
     */
    void stopTask(String id, Throwable throwable);

    /**
     * 开始进度
     *
     * @param createProcessDTO
     */
    void startProcess(CreateProcessDTO createProcessDTO);

    /**
     * 完成进度
     * <pre>
     *     更新完成数并且删除进度信息
     * </pre>
     */
    void finishProcess(String taskId, String operator);
}
